package com.yic.module.wms.controller.admin.itemwarehouse.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;

import com.alibaba.excel.annotation.ExcelProperty;
import com.yic.framework.excel.core.annotations.DictFormat;
import com.yic.framework.excel.core.convert.DictConvert;


/**
 * 产品仓储信息 Excel VO
 *
 * @author 系统管理员
 */
@Data
public class ItemWarehouseExcelVO {

    @ExcelProperty("序号")
    private Long id;

    @ExcelProperty("工厂")
    private Long factoryId;

    @ExcelProperty("产品")
    private Long itemId;

    @ExcelProperty("默认仓库")
    private Long warehouseId;

    @ExcelProperty("默认库区")
    private Long areaId;

    @ExcelProperty("默认库位")
    private Long locationId;

    @ExcelProperty(value = "产品类型", converter = DictConvert.class)
    @DictFormat("wms_item_type") // TODO 代码优化：建议设置到对应的 XXXDictTypeConstants 枚举类中
    private Integer itemType;

    @ExcelProperty(value = "出库策略", converter = DictConvert.class)
    @DictFormat("wms_strategy") // TODO 代码优化：建议设置到对应的 XXXDictTypeConstants 枚举类中
    private Integer strategy;

    @ExcelProperty("首次入库日")
    private LocalDateTime firstInTime;

    @ExcelProperty("最后入库日")
    private LocalDateTime lastInTime;

    @ExcelProperty("最后出库日")
    private LocalDateTime lastOutTime;

    @ExcelProperty("标准库存")
    private BigDecimal standardStock;

    @ExcelProperty("安全库存")
    private BigDecimal salfStock;

    @ExcelProperty("补货点")
    private BigDecimal reorderPoint;

    @ExcelProperty("库存")
    private BigDecimal stock;

    @ExcelProperty("备注")
    private String remark;

    @ExcelProperty(value = "状态", converter = DictConvert.class)
    @DictFormat("common_status") // TODO 代码优化：建议设置到对应的 XXXDictTypeConstants 枚举类中
    private Byte status;

    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}
